<?php
/**
 * @author Wamania, RenardBlanc
 * Dernière modification : $Date: 2010-08-24 08:21:10 +0000 (Tue, 24 Aug 2010) $
 * Par Qui ?: $Author: dovecyber@gmail.com $
 * Révision : $Rev: 51 $
 *
 **/
 // définition du chemin relatif
require_once  AEDITUUS_ROOT.'commun.php';

// L'objet user, demarrage de la session utilisateur
$user = new AeUser();
$user->session_begin();
$userData = $user->getUserData();
// L'objet bdd, demarrage de la session bdd
$db = db::getInstance();
// On recupere la config generale
$data = array(
    'pseudo' => (isset($user->pseudo) ? $user->pseudo : ''),
    'email' => (isset($user->email) ? $user->email : ''),
    'form_brut' => basename(__FILE__),
    'AEDITUUS_ROOT' => AEDITUUS_ROOT,
    'user' => $user
);
$result = $db->get_array( "SELECT name, value FROM ".$cfg['prefix']."config" );
foreach ($result as $config)
{
    $data[$config->name] = $config->value;
}
//global $user, $cfg;
// On check le statut du user. Pas la peine de gérer le form si de toute façon, il a pas le droit
$checkStatus = $db->get_var("SELECT statut_client FROM ".$cfg['prefix']."users WHERE id=?", array($user->id));
$data['form_msg'] = array();
if ($checkStatus != 'possible') {
    $data['form_msg'][] = 'Vous n’avez plus de possibilité pour le moment, veuillez retenter plus tard.';

//début des variables commune
} elseif($data[$v008]>= $data[$v009]) {
    $data['form_msg'][] = 'Le plafond '.$v001.' du jour est atteint, Nouveau plafond à 07h00 Heure de Paris.';

// On check si le diponible est ok pour le compte final 
} elseif($data[$v007] <= $data[$v004]) {
    $data['form_msg'][] = 'Plus de disponible sur le compte '.$v006.' '.$v001.', essayer plus tard.';

} elseif ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
    $inputs = array(
        'pseudo' => AeValidator::valid($cfg['validator_pseudo'], array('var' => $_POST['pseudo'])),
        'email' => AeValidator::valid('email', array('var' => $_POST['email'])),		
        $v010 => AeValidator::valid($v011, array('var' => $_POST[$v010], 'min' => $v012)),
        $v013 => AeValidator::valid($v014, array('var' => $_POST[$v013], 'min' => $v015)),
        'mont1' => AeValidator::valid('float', array('var' => $_POST['mont1'])),
        'mont1_bis' => AeValidator::valid('float', array('var' => $_POST['mont1_bis'])),
        'mont2' => AeValidator::valid('float', array('var' => $_POST['mont2'])),
        'mont2_bis' => AeValidator::valid('float', array('var' => $_POST['mont2_bis'])),
        'termes' => ( (isset($_POST['termes'])&&($_POST['termes'] == 'termes')) ? true : false),
        'pin' => AeValidator::valid('num', array('var'=>$_POST['pin'], 'min'=>4, 'max'=>4))
    );
// On check les champs pour vérrifier si ils sont bon
    $user_row = $db->get_row("SELECT pseudo, email FROM ".$cfg['prefix']."users WHERE id=?", array($user->id));
    if ($user_row->pseudo != $inputs['pseudo']) {
        $data['form_msg'][] = 'Ce pseudo n\'est pas celui du compte actuel';
    }
    if ($user_row->email != $inputs['email']) {
        $data['form_msg'][] = 'Cet email n\'est pas celui du compte actuel';
    }
    if ($userData['pin'] != $inputs['pin']) {
        $data['form_msg'][] = 'Le code transaction n\'est pas valide';
    }
    if ($inputs[$v010] === false) {
        $data['form_msg'][] = 'Le compte '.$v005.' n\'est pas correct';
    }
    if ($inputs[$v013] === false) {
        $data['form_msg'][] = 'Le compte '.$v006.' n\'est pas correct';
    }
// champs de vérification a tester sur beta non fonctionnel car l'alerte est pris par le Js	
    if ( ($inputs['mont1'] < $cfg[$v004]) || ($inputs['mont2'] > $cfg[$v003]) ) {
        $data['form_msg'][] = 'Le montant que vous désirez doit être compris entre '.$cfg[$v004].' et '.$cfg[$v005].'';
    }
// champs de vérification a tester sur beta non fonctionnel pas d'alerte
    if (($inputs[$v028] > $cfg[$v007]) || ($inputs[$v029] > $cfg[$v007])) {
            $data['form_msg'][] = 'Le montant à vous envoyer '.$inputs['mont2'].' dépasse le solde disponible,<br> les frais '.$cfg[$v006].' étant pris en charge Par EgainMoney. ';
    }
    $v016 = $db->get_var("SELECT 1 FROM ".$cfg['prefix']."".$v017." WHERE ".$v018."=?", array($inputs[$v010]));
    if ($db->get_nb_result() == 1) {
        $data['form_msg'][] = 'Votre compte '.$v005.' est bannis, changer de compte';
    }
    $v019 = $db->get_var("SELECT 1 FROM ".$cfg['prefix']."".$v020." WHERE ".$v021."=?", array($inputs[$v013]));
    if ($db->get_nb_result() == 1) {
        $data['form_msg'][] = 'Votre compte '.$v006.' semble bannis, changer de compte';
    }
// Sur quels devises	
	$inputs['devise_de'] = $de_d;
	$inputs['devise_vers'] = $de_v;
// Calcule de la taxe variable ! calculer selon le montant commander et les frais fixes des services ex: excell (C4)/(Feuil2!B3/100)
	$inputs['taxeF1'] = ( $cfg['fraisF_eg']/($inputs['mont1']/100) );
	$inputs['taxeF2'] = ( $cfg[$v023]/($inputs['mont1']/100) );
	$inputs['taxeF3'] = ( $cfg[$v026]/($inputs['mont1']/100) );
	$inputs['taxeFixe'] = ( $inputs['taxeF1'] + $inputs['taxeF2'] + $inputs['taxeF3'] );
	$inputs['taxeV'] = ( $cfg['fraisV_eg'] + $cfg[$v024] + $cfg[$v027] );
// Calcule de la taxe utiliser sur le montant commander (mont1) pour avoir le mont2
	$inputs['taxe'] = round ( (($inputs['taxeFixe'] + $inputs['taxeV'])), 3);
// Calcule du mont2 (somme que devras recevoir le client) suivant la taxe et le mont1 commander !ex: excell B3*(100%-taxe)	
	$inputs['mont2'] = round ( ($inputs['mont1']*( (100 - $inputs['taxe'])/100)), 2);
// Calcule du mont1_bis que je recevrais sur mon compte frais du service compris
	$Mtaxe = (($inputs['mont1']/100) * ($cfg[$v024])) + $cfg[$v023] ;
	$inputs['mont1_bis'] = round ( $inputs['mont1'] - $Mtaxe, 2);
// Calcule du mont2_bis que j'enverais au client frais du service compris pour respecter le mont2	
	$inputs['mont2_bis'] = round ( ($inputs['mont2'] + $cfg[$v026]) / ((100 - $cfg[$v027])/100), 2);
	
// Calcule du taux de change applicable ! partie utilisé seulement pour les echanges avec un taux de conversion de devise	
	if ($inputs['devise_de'] == 'EUR' AND $inputs['devise_vers'] == 'USD') {
		// le taux de change euro dollar
		$inputs['tauxeg'] = round ( $cfg[$T] - (($cfg[$T]/100)*$cfg['fraisV_eg']),4);
		// calcule du mont2_ter (somme en dollar corespondant a mont2 ce que doit recevoir le client)
		$inputs['mont2_ter'] = round ( ($inputs['mont2'] * $inputs['tauxeg']), 2);
		// calcule le mont2_us (somme en dollar correspondant a ce que je devrait envoyer pour respecter le mont2_ter)
		$inputs['mont2_us'] = round ( ($inputs['mont2_ter'] + $cfg[$v026]) / ((100 - $cfg[$v027])/100), 2);
		// calcule en euros des gains Eg   =mont1_bis-(mont2_us*taux dollar euro)
		$inputs['CorTauxUE'] = round (($cfg[$T1] + 0.000025),5);
		// =((B14*B4%)+B14)+0,0001667
		$inputs['TauxUE'] = round ( ( (($inputs['CorTauxUE']/100)*$cfg['fraisV_eg']) +  $inputs['CorTauxUE']),5);
		$inputs['TauxUEc'] = round (($inputs['TauxUE'] + 0.0001667),5);
		$inputs['gain_eg'] = round ( ($inputs['mont1_bis'] - ($inputs['mont2_us']*$inputs['TauxUEc'])), 2);
	}
	if  ($inputs['devise_de'] == 'USD' AND $inputs['devise_vers'] == 'EUR') {
		// le taux de change euro dollar
		$inputs['taux1'] = round ( $cfg[$T1] - (($cfg[$T1]/100)*$cfg['fraisV_eg']),4);
		$inputs['taux'] = round ( ( (($cfg[$T]/100)*$cfg['fraisV_eg']) +  $cfg[$T]),5);
		// correction du taux de change us euro
		$inputs['tauxeg'] = round (($inputs['taux'] + 0.0001667),5);
		// calcule du mont2_ter (somme en euro corespondant a mont2 ce que doit recevoir le client)
		$inputs['mont2_ter'] = round ( ($inputs['mont2'] * $inputs['tauxeg']), 2);
		// calcule le mont2_eu (somme en euro correspondant a ce que je devrait envoyer pour respecter le mont2_ter)
		$inputs['mont2_eu'] = round ( ($inputs['mont2_ter'] + $cfg[$v026]) / ((100 - $cfg[$v027])/100), 2);
		$inputs['gain_eg'] = round ( ($inputs['mont1_bis'] - ($inputs['mont2_eu']*$inputs['taux1'])), 2);
	}
	if (($inputs['devise_de'] == 'EUR' AND $inputs['devise_vers'] == 'EUR') OR ($inputs['devise_de'] == 'USD' AND $inputs['devise_vers'] == 'USD')) {
	$inputs['gain_eg'] = round ( ($inputs['mont1_bis'] - $inputs['mont2_bis']), 2);
	}
	// Calcule du gain de la commande par service !((B3/100)*Feuil1!B5)+Feuil1!C5 
	$inputs[$v022] = round ( ( $inputs['mont1'] - $inputs['mont1_bis']), 3);
	$inputs[$v025] = round ( ( $inputs[$v030] - $inputs[$v031]), 3);	
	
// Pas d'erreur, on insert
if (empty($data['form_msg'])) {
		 
	if (($inputs['devise_de'] == 'EUR' AND $inputs['devise_vers'] == 'EUR') OR ($inputs['devise_de'] == 'USD' AND $inputs['devise_vers'] == 'USD')) {
		
		$db->query("INSERT INTO ".$cfg['prefix']."transaction(Id_client, de_serv, compte_de, devise_de, vers_serv, compte_vers, devise_vers, mont1, mont1_bis, mont2, mont2_bis, ip)
		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", array(
		$user->id, $v002, $inputs[$v010], $inputs['devise_de'], $v006, $inputs[$v013], $inputs['devise_vers'], $inputs['mont1'], $inputs['mont1_bis'], $inputs['mont2'], $inputs['mont2_bis'], $userData['ip']
		));
	}
		 
	if (($inputs['devise_de'] == 'EUR' AND $inputs['devise_vers'] == 'USD') OR ($inputs['devise_de'] == 'USD' AND $inputs['devise_vers'] == 'EUR')){
		
		$db->query("INSERT INTO ".$cfg['prefix']."transaction(Id_client, de_serv, compte_de, devise_de, vers_serv, compte_vers, devise_vers, taux, mont1, mont1_bis, mont2, mont2_bis, mont2_ter, $v030, ip)
		VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", array(
		$user->id, $v002, $inputs[$v010], $inputs['devise_de'], $v006, $inputs[$v013], $inputs['devise_vers'], $inputs['tauxeg'], $inputs['mont1'], $inputs['mont1_bis'], $inputs['mont2'], $inputs['mont2_bis'], $inputs['mont2_ter'], $inputs[$v030], $userData['ip']
		));	   
	}	
		
        if ($db->query("
           INSERT INTO ".$cfg['prefix']."gainservices
           (Id_client, de_serv, ".$v022.", devise_de, vers_serv, ".$v025.", devise_vers, gain_eg)
           VALUES (?, ?, ?, ?, ?, ?, ?, ?)", array(
               $user->id, $v002, $inputs[$v022], $inputs['devise_de'], $v006, $inputs[$v025], $inputs['devise_vers'], $inputs['gain_eg']
           )))
	
	{
           $db->query("UPDATE ".$cfg['prefix']."users SET statut_client='encours' WHERE id=?", array($user->id));
           $db->query("UPDATE ".$cfg['prefix']."config SET value=value+? WHERE name='$v008'", array($inputs['mont1']));
           $db->query("UPDATE ".$cfg['prefix']."config SET value=value-? WHERE name='$v007'", array($inputs[$v030]));
           $user->transaction_id = $db->get_insert_id();
           header('Location: '.$coms.'');
	}
	
	// On récupère l'état actuel pour l'écrire dans un fichier
           $result_config = $db->get_array("SELECT * FROM ".$cfg['prefix']."config");
           $str_config = '';
	
	foreach ($result_config as $config) {
            $str_config .= '$cfg[\''.$config->name."']='".$config->value."';\n";
	}
	
	$str = "<?php\n// Ne rien mettre ici, Ce fichier est généré dynamiquement\n".$str_config;
        
	if (!@file_put_contents(AEDITUUS_ROOT.'config/config.php', $str)) {
            $tabNoValid['message'] = 'adm_unabled_to_rewrite';
        }
		
} else {
        unset($inputs['mont2']);
        $data = array_merge($data, $inputs);
    }
}
echo render_view ($data, ''.$rep.'/template/default/'.$forms.'', AEDITUUS_ROOT.''.$rep.'/template/default/index.tpl.php');